home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2005 October / PCWOCT05.iso / Software / FromTheMag / XAMPP 1.4.14 / xampp-win32-1.4.14-installer.exe / xampp / phpMyAdmin / tbl_properties.inc.php < prev    next >
PHP Script  |  2005-04-26  |  30KB  |  733 lines

  1. <?php
  2. /* $Id: tbl_properties.inc.php,v 2.27.2.2 2005/04/26 16:01:13 lem9 Exp $ */
  3. // vim: expandtab sw=4 ts=4 sts=4:
  4. // Check parameters
  5. error_reporting(E_ALL);
  6. require_once('./libraries/common.lib.php');
  7. PMA_checkParameters(array('db','table','action','num_fields'));
  8.  
  9.  
  10. // Get available character sets and storage engines
  11. require_once('./libraries/mysql_charsets.lib.php');
  12. require_once('./libraries/storage_engines.lib.php');
  13.  
  14. ?>
  15. <?php if ($cfg['CtrlArrowsMoving']) { ?>
  16. <!-- Set on key handler for moving using by Ctrl+arrows -->
  17. <script src="libraries/keyhandler.js" type="text/javascript" language="javascript"></script>
  18. <script type="text/javascript" language="javascript">
  19. <!--
  20. var switch_movement = <?php echo $cfg['DefaultPropDisplay'] == 'horizontal' ? '0' : '1'; ?>;
  21. document.onkeydown = onKeyDownArrowsHandler;
  22. // -->
  23. </script>
  24. <?php } 
  25.     // here, the div_x_7 represents a div id which contains
  26.     // the default current timestamp checkbox and label 
  27.     
  28.     if (PMA_MYSQL_INT_VERSION >= 40102) { ?>
  29. <script type="text/javascript" language="javascript">
  30. <!--
  31. function display_field_options(field_type, i) {
  32.     if (field_type == 'TIMESTAMP') {
  33.         getElement('div_' + i + '_7').style.display = 'block';
  34.     } else {
  35.         getElement('div_' + i + '_7').style.display = 'none';
  36.     }
  37.     return true;
  38. }
  39. // -->
  40. </script>
  41. <?php } ?>
  42.  
  43. <form method="post" action="<?php echo $action; ?>" onsubmit="return checkTableEditForm(this, <?php echo $num_fields; ?>)" >
  44. <?php
  45. echo PMA_generate_common_hidden_inputs($db, $table);
  46. if ($action == 'tbl_create.php') {
  47.     ?>
  48.     <input type="hidden" name="reload" value="1" />
  49.     <?php
  50. }
  51. else if ($action == 'tbl_addfield.php') {
  52.     echo "\n";
  53.     ?>
  54.     <input type="hidden" name="field_where" value="<?php echo $field_where; ?>" />
  55.     <input type="hidden" name="after_field" value="<?php echo $after_field; ?>" />
  56.     <?php
  57. }
  58. echo "\n";
  59.  
  60. if (isset($num_fields)) {
  61.     ?>
  62.     <input type="hidden" name="orig_num_fields" value="<?php echo $num_fields; ?>" />
  63.     <?php
  64. }
  65.  
  66. if (isset($field_where)) {
  67.     ?>
  68.     <input type="hidden" name="orig_field_where" value="<?php echo $field_where; ?>" />
  69.     <?php
  70. }
  71.  
  72. if (isset($after_field)) {
  73.     ?>
  74.     <input type="hidden" name="orig_after_field" value="<?php echo $after_field; ?>" />
  75.     <?php
  76. }
  77.  
  78. if (isset($selected) && is_array($selected)) {
  79.     foreach ($selected AS $o_fld_nr => $o_fld_val) {
  80.     ?>
  81.     <input type="hidden" name="selected[<?php echo $o_fld_nr; ?>]" value="<?php echo urlencode($o_fld_val); ?>" />
  82.     <?php
  83.         if (!isset($true_selected)) {
  84.             ?>
  85.     <input type="hidden" name="true_selected[<?php echo $o_fld_nr; ?>]" value="<?php echo urlencode($o_fld_val); ?>" />
  86.             <?php
  87.         }
  88.  
  89.     }
  90.  
  91.     if (isset($true_selected) && is_array($true_selected)) {
  92.         foreach ($true_selected AS $o_fld_nr => $o_fld_val) {
  93.         ?>
  94.         <input type="hidden" name="true_selected[<?php echo $o_fld_nr; ?>]" value="<?php echo urlencode($o_fld_val); ?>" />
  95.         <?php
  96.         }
  97.     }
  98.  
  99. } elseif (isset($field)) {
  100.     ?>
  101.     <input type="hidden" name="orig_field" value="<?php echo urlencode($field); ?>" />
  102.     <input type="hidden" name="true_selected[] value="<?php echo (isset($orig_field) ? $orig_field : urlencode($field)); ?>" />
  103.     <?php
  104. }
  105.  
  106. $is_backup = ($action != 'tbl_create.php' && $action != 'tbl_addfield.php');
  107.  
  108. $header_cells = array();
  109. $content_cells = array();
  110.  
  111. $header_cells[] = $strField;
  112. $header_cells[] = $strType . ($GLOBALS['cfg']['ReplaceHelpImg'] ? PMA_showMySQLDocu('Reference', 'Column_types') : '<br /><span style="font-weight: normal">' . PMA_showMySQLDocu('Reference', 'Column_types') . '</span>');
  113. $header_cells[] = $strLengthSet;
  114. if (PMA_MYSQL_INT_VERSION >= 40100) {
  115.     $header_cells[] = $strCollation;
  116. }
  117. $header_cells[] = $strAttr;
  118. $header_cells[] = $strNull;
  119. $header_cells[] = $strDefault . '**';
  120. $header_cells[] = $strExtra;
  121.  
  122.  
  123.  
  124. // lem9: We could remove this 'if' and let the key information be shown and
  125. // editable. However, for this to work, tbl_alter must be modified to use the
  126. // key fields, as tbl_addfield does.
  127.  
  128. if (!$is_backup) {
  129.     $header_cells[] = $cfg['PropertiesIconic'] ? '<img src="' . $pmaThemeImage . 'b_primary.png" width="16" height="16" alt="' . $strPrimary . '" title="' . $strPrimary . '" />' : $strPrimary;
  130.     $header_cells[] = $cfg['PropertiesIconic'] ? '<img src="' . $pmaThemeImage . 'b_index.png" width="16" height="16" alt="' . $strIndex . '" title="' . $strIndex . '" />' : $strIndex;
  131.     $header_cells[] = $cfg['PropertiesIconic'] ? '<img src="' . $pmaThemeImage . 'b_unique.png" width="16" height="16" alt="' . $strUnique . '" title="' . $strUnique . '" />' : $strUnique;
  132.     $header_cells[] = '---';
  133.     $header_cells[] = $cfg['PropertiesIconic'] ? '<img src="' . $pmaThemeImage . 'b_ftext.png" width="16" height="16" alt="' . $strIdxFulltext . '" title="' . $strIdxFulltext . '" />' : $strIdxFulltext;
  134. }
  135.  
  136. require_once('./libraries/relation.lib.php');
  137. require_once('./libraries/transformations.lib.php');
  138. $cfgRelation = PMA_getRelationsParam();
  139.  
  140. $comments_map = array();
  141. $mime_map = array();
  142. $available_mime = array();
  143.  
  144. if ($cfgRelation['commwork']) {
  145.     $comments_map = PMA_getComments($db, $table);
  146.     $header_cells[] = $strComments;
  147.  
  148.     if ($cfgRelation['mimework'] && $cfg['BrowseMIME']) {
  149.         $mime_map = PMA_getMIME($db, $table);
  150.         $available_mime = PMA_getAvailableMIMEtypes();
  151.  
  152.         $header_cells[] = $strMIME_MIMEtype;
  153.         $header_cells[] = $strMIME_transformation;
  154.         $header_cells[] = $strMIME_transformation_options . '***';
  155.     }
  156. }
  157.  
  158. // garvin: workaround for field_fulltext, because its submitted indizes contain
  159. //         the index as a value, not a key. Inserted here for easier maintaineance
  160. //         and less code to change in existing files.
  161. if (isset($field_fulltext) && is_array($field_fulltext)) {
  162.     foreach ($field_fulltext AS $fulltext_nr => $fulltext_indexkey) {
  163.         $submit_fulltext[$fulltext_indexkey] = $fulltext_indexkey;
  164.     }
  165. }
  166.  
  167. for ($i = 0 ; $i < $num_fields; $i++) {
  168.     $submit_null = FALSE;
  169.     if (isset($regenerate) && $regenerate == TRUE) {
  170.         // An error happened with previous inputs, so we will restore the data
  171.         // to embed it once again in this form.
  172.  
  173.         $row['Field']     = (isset($field_name) && isset($field_name[$i]) ? $field_name[$i] : FALSE);
  174.         $row['Type']      = (isset($field_type) && isset($field_type[$i]) ? $field_type[$i] : FALSE);
  175.         $row['Null']      = (isset($field_null) && isset($field_null[$i]) ? $field_null[$i] : '');
  176.         if (isset($field_type[$i]) && $row['Null'] == '') {
  177.             $submit_null = TRUE;
  178.         }
  179.  
  180.         if (isset(${'field_key_' . $i}) && ${'field_key_' . $i} == 'primary_' . $i) {
  181.             $row['Key'] = 'PRI';
  182.         } elseif (isset(${'field_key_' . $i}) && ${'field_key_' . $i} == 'index_' . $i) {
  183.             $row['Key'] = 'MUL';
  184.         } elseif (isset(${'field_key_' . $i}) && ${'field_key_' . $i} == 'unique_' . $i) {
  185.             $row['Key'] = 'UNI';
  186.         } else {
  187.             $row['Key'] = '';
  188.         }
  189.  
  190.         $row['Default']   = (isset($field_default) && isset($field_default[$i]) ? $field_default[$i] : FALSE);
  191.         $row['Extra']     = (isset($field_extra) && isset($field_extra[$i]) ? $field_extra[$i] : FALSE);
  192.         $row['Comment']   = (isset($submit_fulltext) && isset($submit_fulltext[$i]) && ($submit_fulltext[$i] == $i) ? 'FULLTEXT' : FALSE);
  193.  
  194.         $submit_length    = (isset($field_length) && isset($field_length[$i]) ? $field_length[$i] : FALSE);
  195.         $submit_attribute = (isset($field_attribute) && isset($field_attribute[$i]) ? $field_attribute[$i] : FALSE);
  196.         
  197.         $submit_default_current_timestamp = (isset($field_default_current_timestamp) && isset($field_default_current_timestamp[$i]) ? TRUE : FALSE);
  198.         
  199.         if (isset($field_comments) && isset($field_comments[$i])) {
  200.             $comments_map[$row['Field']] = $field_comments[$i];
  201.         }
  202.  
  203.         if (isset($field_mimetype) && isset($field_mimetype[$i])) {
  204.             $mime_map[$row['Field']]['mimetype'] = $field_mimetype[$i];
  205.         }
  206.  
  207.         if (isset($field_transformation) && isset($field_transformation[$i])) {
  208.             $mime_map[$row['Field']]['transformation'] = $field_transformation[$i];
  209.         }
  210.  
  211.         if (isset($field_transformation_options) && isset($field_transformation_options[$i])) {
  212.             $mime_map[$row['Field']]['transformation_options'] = $field_transformation_options[$i];
  213.         }
  214.  
  215.     } elseif (isset($fields_meta)) {
  216.         $row = $fields_meta[$i];
  217.     }
  218.  
  219.     $bgcolor = ($i % 2) ? $cfg['BgcolorOne'] : $cfg['BgcolorTwo'];
  220.  
  221.     // Cell index: If certain fields get left out, the counter shouldn't chage.
  222.     $ci = 0;
  223.     // Everytime a cell shall be left out the STRG-jumping feature, $ci_offset
  224.     // has to be incremented ($ci_offset++)
  225.     $ci_offset = -1;
  226.  
  227.     if ($is_backup) {
  228.         $backup_field = (isset($true_selected) && $true_selected[$i] ? $true_selected[$i] : (isset($row) && isset($row['Field']) ? urlencode($row['Field']) : ''));
  229.         $content_cells[$i][$ci] = "\n" . '<input type="hidden" name="field_orig[]" value="' . $backup_field . '" />' . "\n";
  230.     } else {
  231.         $content_cells[$i][$ci] = '';
  232.     }
  233.  
  234.     $content_cells[$i][$ci] .= "\n" . '<input id="field_' . $i . '_' . ($ci - $ci_offset) . '" type="text" name="field_name[]" size="10" maxlength="64" value="' . (isset($row) && isset($row['Field']) ? str_replace('"', '"', $row['Field']) : '') . '" class="textfield" title="' . $strField . '" />';
  235.     $ci++;
  236.     $content_cells[$i][$ci] = '<select name="field_type[]" id="field_' . $i . '_' . ($ci - $ci_offset) . '" onchange="display_field_options(this.value,' . $i .')" >' . "\n";
  237.  
  238.     if (empty($row['Type'])) {
  239.         $row['Type'] = '';
  240.         $type        = '';
  241.     }
  242.     else {
  243.         $type        = $row['Type'];
  244.     }
  245.     // set or enum types: slashes single quotes inside options
  246.     if (preg_match('@^(set|enum)\((.+)\)$@i', $type, $tmp)) {
  247.         $type   = $tmp[1];
  248.         $length = substr(preg_replace('@([^,])\'\'@', '\\1\\\'', ',' . $tmp[2]), 1);
  249.     } else {
  250.         // strip the "BINARY" attribute, except if we find "BINARY(" because
  251.         // this would be a BINARY or VARBINARY field type
  252.         $type   = preg_replace('@BINARY([^\(])@i', '', $type);
  253.         $type   = preg_replace('@ZEROFILL@i', '', $type);
  254.         $type   = preg_replace('@UNSIGNED@i', '', $type);
  255.  
  256.         if (strpos($type, '(')) {
  257.             $length = chop(substr($type, (strpos($type, '(') + 1), (strpos($type, ')') - strpos($type, '(') - 1)));
  258.             $type = chop(substr($type, 0, strpos($type, '(')));
  259.         } else {
  260.             $length = '';
  261.         }
  262.     } // end if else
  263.  
  264.     // some types, for example longtext, are reported as
  265.     // "longtext character set latin7" when their charset and / or collation
  266.     // differs from the ones of the corresponding database.
  267.     if (PMA_MYSQL_INT_VERSION >= 40100) {
  268.         $tmp = strpos($type, 'character set');
  269.         if ($tmp) {
  270.             $type = substr($type, 0, $tmp-1);
  271.         }
  272.     }
  273.  
  274.     if (isset($submit_length) && $submit_length != FALSE) {
  275.         $length = $submit_length;
  276.     }
  277.  
  278.     // rtrim the type, for cases like "float unsigned"
  279.     $type = rtrim($type);
  280.     $type_upper = strtoupper($type);
  281.  
  282.     $cnt_column_types = count($cfg['ColumnTypes']);
  283.     for ($j = 0; $j < $cnt_column_types; $j++) {
  284.         $content_cells[$i][$ci] .= '                <option value="'. $cfg['ColumnTypes'][$j] . '"';
  285.         if ($type_upper == strtoupper($cfg['ColumnTypes'][$j])) {
  286.             $content_cells[$i][$ci] .= ' selected="selected"';
  287.         }
  288.         $content_cells[$i][$ci] .= '>' . $cfg['ColumnTypes'][$j] . '</option>' . "\n";
  289.     } // end for
  290.  
  291.     $content_cells[$i][$ci] .= '    </select>';
  292.     $ci++;
  293.  
  294.     if ($is_backup) {
  295.         $content_cells[$i][$ci] = "\n" . '<input type="hidden" name="field_length_orig[]" value="' . urlencode($length) . '" />';
  296.     } else {
  297.         $content_cells[$i][$ci] = '';
  298.     }
  299.  
  300.     $content_cells[$i][$ci] .= "\n" . '<input id="field_' . $i . '_' . ($ci - $ci_offset) . '" type="text" name="field_length[]" size="8" value="' . str_replace('"', '"', $length) . '" class="textfield" />' . "\n";
  301.     $ci++;
  302.  
  303.     if (preg_match('@^(set|enum)$@i', $type)) {
  304.         $binary           = 0;
  305.         $unsigned         = 0;
  306.         $zerofill         = 0;
  307.     } else {
  308.         if (!preg_match('@BINARY[\(]@i', $row['Type']) && PMA_MYSQL_INT_VERSION < 40100) {
  309.             $binary           = stristr($row['Type'], 'binary');
  310.         } else {
  311.             $binary           = FALSE;
  312.         }
  313.         $unsigned         = stristr($row['Type'], 'unsigned');
  314.         $zerofill         = stristr($row['Type'], 'zerofill');
  315.     }
  316.  
  317.     if (PMA_MYSQL_INT_VERSION >= 40100) {
  318.         $tmp_collation          = empty($row['Collation']) ? NULL : $row['Collation'];
  319.         $content_cells[$i][$ci] = PMA_generateCharsetDropdownBox(PMA_CSDROPDOWN_COLLATION, 'field_collation[]', 'field_' . $i . '_' . ($ci - $ci_offset), $tmp_collation, FALSE);
  320.         unset($tmp_collation);
  321.         $ci++;
  322.     }
  323.  
  324.     $content_cells[$i][$ci] = '<select style="font-size: ' . $font_smallest . ';" name="field_attribute[]" id="field_' . $i . '_' . ($ci - $ci_offset) . '">' . "\n";
  325.  
  326.     $attribute     = '';
  327.     if ($binary) {
  328.         $attribute = 'BINARY';
  329.     }
  330.     if ($unsigned) {
  331.         $attribute = 'UNSIGNED';
  332.     }
  333.     if ($zerofill) {
  334.         $attribute = 'UNSIGNED ZEROFILL';
  335.     }
  336.  
  337.     if (isset($submit_attribute) && $submit_attribute != FALSE) {
  338.         $attribute = $submit_attribute;
  339.     }
  340.  
  341.     // MySQL 4.1.2+ TIMESTAMP options
  342.     // (if on_update_current_timestamp is set, then it's TRUE)
  343.     if (isset($row['Field']) && isset($analyzed_sql[0]['create_table_fields'][$row['Field']]['on_update_current_timestamp'])) {
  344.         $attribute = 'ON UPDATE CURRENT_TIMESTAMP';
  345.     }
  346.     if ((isset($row['Field']) && isset($analyzed_sql[0]['create_table_fields'][$row['Field']]['default_current_timestamp']))
  347.      || (isset($submit_default_current_timestamp) && $submit_default_current_timestamp)  ) {
  348.         $default_current_timestamp = TRUE; 
  349.     } else {
  350.         $default_current_timestamp = FALSE; 
  351.     }
  352.  
  353.     // Dynamically add ON UPDATE CURRENT_TIMESTAMP to the possible attributes
  354.     if (PMA_MYSQL_INT_VERSION >= 40102 && !in_array('ON UPDATE CURRENT_TIMESTAMP', $cfg['AttributeTypes'])) {
  355.         $cfg['AttributeTypes'][] = 'ON UPDATE CURRENT_TIMESTAMP';
  356.     }
  357.  
  358.  
  359.     $cnt_attribute_types = count($cfg['AttributeTypes']);
  360.     for ($j = 0;$j < $cnt_attribute_types; $j++) {
  361.         if (PMA_MYSQL_INT_VERSION >= 40100 && $cfg['AttributeTypes'][$j] == 'BINARY') {
  362.             continue;
  363.         }
  364.         $content_cells[$i][$ci] .= '                <option value="'. $cfg['AttributeTypes'][$j] . '"';
  365.         if (strtoupper($attribute) == strtoupper($cfg['AttributeTypes'][$j])) {
  366.             $content_cells[$i][$ci] .= ' selected="selected"';
  367.         }
  368.         $content_cells[$i][$ci] .= '>' . $cfg['AttributeTypes'][$j] . '</option>' . "\n";
  369.     }
  370.  
  371.     $content_cells[$i][$ci] .= '</select>';
  372.     $ci++;
  373.  
  374.     $content_cells[$i][$ci] = '<select name="field_null[]" id="field_' . $i . '_' . ($ci - $ci_offset) . '">';
  375.  
  376.     if ((!isset($row) || empty($row['Null']) || $row['Null'] == 'NO' || $row['Null'] == 'NOT NULL') && $submit_null == FALSE) {
  377.         $content_cells[$i][$ci] .= "\n";
  378.         $content_cells[$i][$ci] .= '    <option value="NOT NULL" selected="selected" >not null</option>' . "\n";
  379.         $content_cells[$i][$ci] .= '    <option value="">null</option>' . "\n";
  380.     } else {
  381.         $content_cells[$i][$ci] .= "\n";
  382.         $content_cells[$i][$ci] .= '    <option value="" selected="selected" >null</option>' . "\n";
  383.         $content_cells[$i][$ci] .= '    <option value="NOT NULL">not null</option>' . "\n";
  384.     }
  385.  
  386.     $content_cells[$i][$ci] .= "\n" . '</select>';
  387.     $ci++;
  388.  
  389.     if (isset($row)
  390.         && !isset($row['Default']) && isset($row['Null']) && $row['Null'] == 'YES') {
  391.         $row['Default'] = 'NULL';
  392.     }
  393.  
  394.     if ($is_backup) {
  395.         $content_cells[$i][$ci] = "\n" . '<input type="hidden" name="field_default_orig[]" size="8" value="' . (isset($row) && isset($row['Default']) ? urlencode($row['Default']) : '') . '" />';
  396.     } else {
  397.         $content_cells[$i][$ci] = "\n";
  398.     }
  399.  
  400.     // for a TIMESTAMP, do not show CURRENT_TIMESTAMP as a default value
  401.     if (PMA_MYSQL_INT_VERSION >= 40102 
  402.         && $type_upper == 'TIMESTAMP'
  403.         && $default_current_timestamp
  404.         && isset($row)
  405.         && isset($row['Default'])) {
  406.         $row['Default'] = '';
  407.     }
  408.  
  409.     $content_cells[$i][$ci] .= '<input id="field_' . $i . '_' . ($ci - $ci_offset) . '" type="text" name="field_default[]" size="12" value="' . (isset($row) && isset($row['Default']) ? str_replace('"', '"', $row['Default']) : '') . '" class="textfield" />';
  410.     if (PMA_MYSQL_INT_VERSION >= 40102) {
  411.         if ($type_upper == 'TIMESTAMP') {
  412.             $tmp_display_type = 'block';
  413.         } else {
  414.             $tmp_display_type = 'none';
  415.         }
  416.         $content_cells[$i][$ci] .= '<br /><div id="div_' . $i . '_' . ($ci - $ci_offset) . '" style="white-space: nowrap; display: ' . $tmp_display_type . '"><input id="field_' . $i . '_' . ($ci - $ci_offset) . 'a" type="checkbox" name="field_default_current_timestamp[' . $i . ']"';
  417.         if ($default_current_timestamp) {
  418.             $content_cells[$i][$ci] .= ' checked="checked" ';
  419.         }
  420.         $content_cells[$i][$ci] .= ' /><label for="field_' . $i . '_' . ($ci - $ci_offset) . 'a" style="font-size: ' . $font_smallest . ';">CURRENT_TIMESTAMP</label></div>'; 
  421.     }
  422.     $ci++;
  423.  
  424.     $content_cells[$i][$ci] = '<select name="field_extra[]" id="field_' . $i . '_' . ($ci - $ci_offset) . '">';
  425.  
  426.     if (!isset($row) || empty($row['Extra'])) {
  427.         $content_cells[$i][$ci] .= "\n";
  428.         $content_cells[$i][$ci] .= '<option value=""></option>' . "\n";
  429.         $content_cells[$i][$ci] .= '<option value="AUTO_INCREMENT">auto_increment</option>' . "\n";
  430.     } else {
  431.         $content_cells[$i][$ci] .= "\n";
  432.         $content_cells[$i][$ci] .= '<option value="AUTO_INCREMENT">auto_increment</option>' . "\n";
  433.         $content_cells[$i][$ci] .= '<option value=""></option>' . "\n";
  434.     }
  435.  
  436.     $content_cells[$i][$ci] .= "\n" . '</select>';
  437.     $ci++;
  438.  
  439.  
  440.     // lem9: See my other comment about removing this 'if'.
  441.     if (!$is_backup) {
  442.         if (isset($row) && isset($row['Key']) && $row['Key'] == 'PRI') {
  443.             $checked_primary = ' checked="checked"';
  444.         } else {
  445.             $checked_primary = '';
  446.         }
  447.         if (isset($row) && isset($row['Key']) && $row['Key'] == 'MUL') {
  448.             $checked_index   = ' checked="checked"';
  449.         } else {
  450.             $checked_index   = '';
  451.         }
  452.         if (isset($row) && isset($row['Key']) && $row['Key'] == 'UNI') {
  453.             $checked_unique   = ' checked="checked"';
  454.         } else {
  455.             $checked_unique   = '';
  456.         }
  457.         if (empty($checked_primary)
  458.             && empty($checked_index)
  459.             && empty($checked_unique)) {
  460.             $checked_none = ' checked="checked"';
  461.         } else {
  462.             $checked_none = '';
  463.         }
  464.  
  465.         if ((isset($row) && isset($row['Comment']) && $row['Comment'] == 'FULLTEXT')) {
  466.             $checked_fulltext = ' checked="checked"';
  467.         } else {
  468.             $checked_fulltext = '';
  469.         }
  470.  
  471.         $content_cells[$i][$ci] = "\n" . '<input type="radio" name="field_key_' . $i . '" value="primary_' . $i . '"' . $checked_primary . ' title="' . $strPrimary . '" />';
  472.         $ci++;
  473.  
  474.         $content_cells[$i][$ci] = "\n" . '<input type="radio" name="field_key_' . $i . '" value="index_' . $i . '"' .  $checked_index . ' title="' . $strIndex . '" />';
  475.         $ci++;
  476.  
  477.         $content_cells[$i][$ci] = "\n" . '<input type="radio" name="field_key_' . $i . '" value="unique_' . $i . '"' .  $checked_unique . ' title="' . $strUnique . '" />';
  478.         $ci++;
  479.  
  480.         $content_cells[$i][$ci] = "\n" . '<input type="radio" name="field_key_' . $i . '" value="none_' . $i . '"' .  $checked_none . ' title="---" />';
  481.         $ci++;
  482.  
  483.         $content_cells[$i][$ci] = '<input type="checkbox" name="field_fulltext[]" value="' . $i . '"' . $checked_fulltext . ' title="' . $strIdxFulltext . '" />';
  484.         $ci++;
  485.     } // end if ($action ==...)
  486.  
  487.     // garvin: comments
  488.     if ($cfgRelation['commwork']) {
  489.         $content_cells[$i][$ci] = '<input id="field_' . $i . '_' . ($ci - $ci_offset) . '" type="text" name="field_comments[]" size="12" value="' . (isset($row) && isset($row['Field']) && is_array($comments_map) && isset($comments_map[$row['Field']]) ?  htmlspecialchars($comments_map[$row['Field']]) : '') . '" class="textfield" />';
  490.         $ci++;
  491.     }
  492.  
  493.     // garvin: MIME-types
  494.     if ($cfgRelation['mimework'] && $cfg['BrowseMIME'] && $cfgRelation['commwork']) {
  495.         $content_cells[$i][$ci] = '<select id="field_' . $i . '_' . ($ci - $ci_offset) . '" size="1" name="field_mimetype[]">' . "\n";
  496.         $content_cells[$i][$ci] .= '    <option value=""></option>' . "\n";
  497.         $content_cells[$i][$ci] .= '    <option value="auto">auto-detect</option>' . "\n";
  498.  
  499.         if (is_array($available_mime['mimetype'])) {
  500.             foreach ($available_mime['mimetype'] AS $mimekey => $mimetype) {
  501.                 $checked = (isset($row) && isset($row['Field']) && isset($mime_map[$row['Field']]['mimetype']) && ($mime_map[$row['Field']]['mimetype'] == str_replace('/', '_', $mimetype)) ? 'selected ' : '');
  502.                 $content_cells[$i][$ci] .= '    <option value="' . str_replace('/', '_', $mimetype) . '" ' . $checked . '>' . htmlspecialchars($mimetype) . '</option>';
  503.             }
  504.         }
  505.  
  506.         $content_cells[$i][$ci] .= '</select>';
  507.         $ci++;
  508.  
  509.         $content_cells[$i][$ci] = '<select id="field_' . $i . '_' . ($ci - $ci_offset) . '" size="1" name="field_transformation[]">' . "\n";
  510.         $content_cells[$i][$ci] .= '    <option value="" title="' . $strNone . '"></option>' . "\n";
  511.         if (is_array($available_mime['transformation'])) {
  512.             foreach ($available_mime['transformation'] AS $mimekey => $transform) {
  513.                 $checked = (isset($row) && isset($row['Field']) && isset($mime_map[$row['Field']]['transformation']) && (preg_match('@' . preg_quote($available_mime['transformation_file'][$mimekey]) . '3?@i', $mime_map[$row['Field']]['transformation'])) ? 'selected ' : '');
  514.                 $tooltip = 'strTransformation_' . strtolower(preg_replace('@(\.inc\.php3?)$@', '', $available_mime['transformation_file'][$mimekey]));
  515.                 $tooltip = isset($$tooltip) ? $$tooltip : sprintf(str_replace('<br />', ' ', $strMIME_nodescription), 'PMA_transformation_' . $tooltip . '()');
  516.                 $content_cells[$i][$ci] .= '<option value="' . $available_mime['transformation_file'][$mimekey] . '" ' . $checked . ' title="' . htmlspecialchars($tooltip) . '">' . htmlspecialchars($transform) . '</option>' . "\n";
  517.             }
  518.         }
  519.  
  520.         $content_cells[$i][$ci] .= '</select>';
  521.         $ci++;
  522.  
  523.         $content_cells[$i][$ci] = '<input id="field_' . $i . '_' . ($ci - $ci_offset) . '" type="text" name="field_transformation_options[]" size="16" value="' . (isset($row) && isset($row['Field']) && isset($mime_map[$row['Field']]['transformation_options']) ?  htmlspecialchars($mime_map[$row['Field']]['transformation_options']) : '') . '" class="textfield" />';
  524.         //$ci++;
  525.     }
  526. } // end for
  527.  
  528. if ($cfg['DefaultPropDisplay'] == 'horizontal') {
  529. ?>
  530.     <table border="<?php echo $cfg['Border']; ?>" cellpadding="2" cellspacing="1">
  531.     <tr>
  532. <?php
  533.     if (is_array($header_cells)) {
  534.         foreach ($header_cells AS $header_nr => $header_val) {
  535. ?>
  536.         <th class="tblHeaders"><?php echo $header_val; ?></th>
  537. <?php
  538.         }
  539.     }
  540. ?>
  541.     </tr>
  542. <?php
  543.     if (is_array($content_cells)) {
  544.         $i = 0;
  545.         foreach ($content_cells AS $content_nr => $content_row) {
  546.             $i++;
  547.             echo "\n" . '<tr>' . "\n";
  548.  
  549.             $bgcolor = ($i % 2) ? $cfg['BgcolorOne'] : $cfg['BgcolorTwo'];
  550.  
  551.             if (is_array($content_row)) {
  552.                 foreach ($content_row AS $content_row_nr => $content_row_val) {
  553. ?>
  554.         <td bgcolor="<?php echo $bgcolor; ?>" align="center"><?php echo $content_row_val; ?></td>
  555. <?php
  556.                 }
  557.             }
  558.  
  559.             echo "\n" . '</tr>' . "\n";
  560.         }
  561.     }
  562. ?>
  563.     </table>
  564.     <br />
  565. <?php
  566. } else {
  567. ?>
  568.     <table border="<?php echo $cfg['Border']; ?>">
  569. <?php
  570.     if (is_array($header_cells)) {
  571.         $i = 0;
  572.         foreach ($header_cells AS $header_nr => $header_val) {
  573.             echo "\n" . '<tr>' . "\n";
  574. ?>
  575.         <th align="right"><?php echo $header_val; ?></th>
  576. <?php
  577.     $cnt_content_cells = count($content_cells);
  578.     for ($j = 0; $j < $cnt_content_cells; $j++) {
  579.         if (isset($content_cells[$j][$i]) && $content_cells[$j][$i] != '') {
  580.             $bgcolor = ($j % 2) ? $cfg['BgcolorOne'] : $cfg['BgcolorTwo'];
  581.     ?>
  582.         <td bgcolor="<?php echo $bgcolor; ?>"><?php echo $content_cells[$j][$i]; ?></td>
  583.     <?php
  584.         }
  585.     }
  586.  
  587.     echo "\n" . '</tr>' . "\n";
  588.     $i++;
  589.         }
  590.     }
  591. ?>
  592.     </table>
  593.     <br />
  594. <?php
  595. }
  596.  
  597. if ($action == 'tbl_create.php') {
  598.     echo "\n";
  599.     ?>
  600.     <table>
  601.     <tr valign="top">
  602.         <td><?php echo $strTableComments; ?>: </td>
  603.     <?php
  604.     if ($action == 'tbl_create.php') {
  605.         echo "\n";
  606.         ?>
  607.         <td width="25"> </td>
  608.         <td><?php echo $strTableType; ?>: </td>
  609.         <?php
  610.         if (PMA_MYSQL_INT_VERSION >= 40100) {
  611.             echo '        <td width="25"> </td>' . "\n"
  612.                . '        <td>' . $strCollation . ': </td>' . "\n";
  613.         }
  614.     }
  615.     echo "\n";
  616.     ?>
  617.     </tr>
  618.     <tr>
  619.         <td>
  620.             <input type="text" name="comment" size="40" maxlength="80" value="<?php echo (isset($comment) ? $comment : ''); ?>" class="textfield" />
  621.         </td>
  622.     <?php
  623.     // BEGIN - Table Type - 2 May 2001 - Robbat2
  624.     // change by staybyte - 11 June 2001
  625.     if ($action == 'tbl_create.php') {
  626.         // find mysql capability - staybyte - 11. June 2001
  627.         $result = PMA_DBI_try_query('SHOW VARIABLES LIKE \'have_%\';');
  628.         if ($result) {
  629.             while ($tmp = PMA_DBI_fetch_assoc($result)) {
  630.                 if (isset($tmp['Variable_name'])) {
  631.                     switch ($tmp['Variable_name']) {
  632.                         case 'have_bdb':
  633.                             if (isset($tmp['Variable_name']) && $tmp['Value'] == 'YES') {
  634.                                 $tbl_bdb    = TRUE;
  635.                             }
  636.                             break;
  637.                         case 'have_gemini':
  638.                             if (isset($tmp['Variable_name']) && $tmp['Value'] == 'YES') {
  639.                                 $tbl_gemini = TRUE;
  640.                             }
  641.                             break;
  642.                         case 'have_innodb':
  643.                             if (isset($tmp['Variable_name']) && $tmp['Value'] == 'YES') {
  644.                                 $tbl_innodb = TRUE;
  645.                             }
  646.                             break;
  647.                         case 'have_isam':
  648.                             if (isset($tmp['Variable_name']) && $tmp['Value'] == 'YES') {
  649.                                 $tbl_isam   = TRUE;
  650.                             }
  651.                             break;
  652.                     } // end switch
  653.                 } // end if
  654.             } // end while
  655.         } // end if
  656.         PMA_DBI_free_result($result);
  657.  
  658.         echo "\n";
  659.         ?>
  660.         <td width="25"> </td>
  661.         <td>
  662. <?php echo PMA_generateEnginesDropdown('tbl_type', NULL, (isset($tbl_type) ? $tbl_type : NULL), FALSE, 3); ?>
  663.         </td>
  664.         <?php
  665.         if (PMA_MYSQL_INT_VERSION >= 40100) {
  666.             echo '        <td width="25"> </td>' . "\n"
  667.                . '        <td>' . "\n"
  668.                . PMA_generateCharsetDropdownBox(PMA_CSDROPDOWN_COLLATION, 'tbl_collation', NULL, NULL, FALSE, 3)
  669.                . '        </td>' . "\n";
  670.         }
  671.     }
  672.     echo "\n";
  673.     ?>
  674.         </tr>
  675.     </table>
  676.     <br />
  677.     <?php
  678. }
  679. echo "\n";
  680. // END - Table Type - 2 May 2001 - Robbat2
  681. ?>
  682.  
  683. <?php
  684. if ($action == 'tbl_create.php' || $action == 'tbl_addfield.php') {
  685.     echo '    ' . sprintf($strAddFields,  '<input type="text" name="added_fields" size="2" value="1" onfocus="this.select()" style="vertical-align: middle;" />') . "\n";
  686.     echo '     <input type="submit" name="submit_num_fields" value="' . $strGo . '" onclick="return checkFormElementInRange(this.form, \'added_fields\', 1)" style="vertical-align: middle;" />' . "\n<br />\n<br />\n";
  687. }
  688. ?>
  689.  
  690. <div class="tblFooters" style="width: 80%; text-align: center; padding: 3px;">
  691.     <input type="submit" name="do_save_data" value="<?php echo $strSave; ?>" />
  692. </div>
  693.  
  694. </form>
  695.  
  696. <table>
  697. <tr>
  698.     <td valign="top">* </td>
  699.     <td>
  700.         <?php echo $strSetEnumVal . "\n"; ?>
  701.     </td>
  702. </tr>
  703. <tr>
  704.     <td valign="top">** </td>
  705.     <td>
  706.         <?php echo $strDefaultValueHelp . "\n"; ?>
  707.     </td>
  708. </tr>
  709.  
  710. <?php
  711. if ($cfgRelation['commwork'] && $cfgRelation['mimework'] && $cfg['BrowseMIME']) {
  712. ?>
  713. <tr>
  714.     <td valign="top" rowspan="2">*** </td>
  715.     <td>
  716.         <?php echo $strMIME_transformation_options_note  . "\n"; ?>
  717.     </td>
  718. </tr>
  719.  
  720. <tr>
  721.     <td>
  722.         <?php echo sprintf($strMIME_transformation_note, '<a href="libraries/transformations/overview.php?' . PMA_generate_common_url($db, $table) . '" target="_blank">', '</a>') . "\n"; ?>
  723.     </td>
  724. </tr>
  725. <?php
  726. }
  727. ?>
  728.  
  729. </table>
  730. <br />
  731.  
  732. <center><?php echo PMA_showMySQLDocu('Reference', 'CREATE_TABLE'); ?></center>
  733.